﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BussinessEntity;
using Equin.ApplicationFramework;
using BussinessLayer;
using Utilities;

namespace PresentationLayer
{
    public partial class ucReceipt : UserControl
    {
        public ucReceipt()
        {
            InitializeComponent();
            LoadForm(ReceiptManager.GetAll().Array);
            dgvBill.BackgroundColor = Color.White;
        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            frmReceipt frm = new frmReceipt();
            frm.ShowDialog();
            if (frm.HoaDonMoi != null)
            {
                LoadForm(ReceiptManager.GetAll().Array);
            }
        }

        void LoadForm(List<Receipt> ds)
        {
            dgvBill.AutoGenerateColumns = false;
            foreach (var d in ds)
                d.ListDetails = new List<ReceiptDetail>();
            dgvBill.DataSource = new BindingListView<Receipt>(ds);
        }

        private void biUpdate_Click(object sender, EventArgs e)
        {
            if (dgvBill.SelectedRows.Count > 0)
            {
                frmReceipt frm = new frmReceipt(DataUtil.ToString(dgvBill.SelectedRows[0].Cells["MaHD"].Value));
                frm.ShowDialog();
                if (frm.HoaDonMoi != null)
                {
                    LoadForm(ReceiptManager.GetAll().Array);
                }
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một thông tin để cập nhật!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void biDelete_Click(object sender, EventArgs e)
        {
            if (dgvBill.SelectedRows.Count > 0)
            {
                if (MessageBox.Show("Bạn có chắc chắn xóa không???", "Xác nhận", 
                    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    ActionResult<Receipt> rs = ReceiptManager.Delete(DataUtil.ToString(dgvBill.SelectedRows[0].Cells["MaHD"].Value));
                    if (rs.Success)
                    {
                        LoadForm(ReceiptManager.GetAll().Array);
                        MessageBox.Show("Xóa thành công!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                        MessageBox.Show(rs.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một thông tin để xóa!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void biSearch_Click(object sender, EventArgs e)
        {
            frmSearchBill frm = new frmSearchBill();
            frm.ShowDialog();
            if (frm.Result != null)
            {
                LoadForm(frm.Result);
            }
        }

        private void biRefresh_Click(object sender, EventArgs e)
        {
            LoadForm(ReceiptManager.GetAll().Array);
        }

        private void dgvBill_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvBill.SelectedRows.Count > 0)
            {
                frmReceipt frm = new frmReceipt(DataUtil.ToString(dgvBill.SelectedRows[0].Cells["MaHD"].Value));
                frm.ShowDialog();
                if (frm.HoaDonMoi != null)
                {
                    LoadForm(ReceiptManager.GetAll().Array);
                }
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một thông tin để cập nhật!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {
            btnPrint.Expanded = true;
        }

        private void biInPhieuNhan_Click(object sender, EventArgs e)
        {
            if (dgvBill.SelectedRows.Count > 0)
            {
                string md = DataUtil.ToString(dgvBill.SelectedRows[0].Cells["MaHD"].Value);
                frmReceiptPrint frm = new frmReceiptPrint(ReceiptManager.GetSingle(md).Object);
                frm.ShowDialog();
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một thông tin để in!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void biInHoaDon_Click(object sender, EventArgs e)
        {
            if (dgvBill.SelectedRows.Count > 0)
            {
                string md = DataUtil.ToString(dgvBill.SelectedRows[0].Cells["MaHD"].Value);
                frmReceiptDetailPrint frm = new frmReceiptDetailPrint(ReceiptManager.GetSingle(md).Object);
                frm.ShowDialog();
            }
            else
            {
                MessageBox.Show("Bạn phải chọn một thông tin để in!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
    }
}
